1. Field of the Invention
The present invention relates to the field of computer systems and their operating systems, in particular, computer systems executing the UNIX.RTM. system (UNIX.RTM. is a registered trademark of UNIX System Laboratories, Inc.). More specifically, the present invention relates to booting up a computer system.
2. Background
Typically, during system start up, the central processing unit (CPU) of a computer system is given the start address of a bootstrap program in a boot prom. The CPU fetches the first instruction at the start address and starts executing the bootstrap program. The bootstrap program reads a boot program from the boot block of a boot device into memory and transfers control to the start address of the boot program. The boot program in turn loads the operating system from the boot device into memory and transfers control to the start address of the operating system. The operating system goes through initialization and starts execution.
The boot program loads the operating system from the boot device using a built-in device driver for the boot device in the boot prom. Thus, a third party vendor's device cannot be used as a boot device, unless the boot prom is rebuilt to specifically include a built-in driver for the third party vendor's device. To do so, special knowledge and skill are required. It is therefore desirable to have a method for booting up a computer system that supports third party boot devices, but without requiring the boot prom to be rebuilt.
In the case of the UNIX.RTM. system, typically the boot program, after being loaded into memory from the boot block of the boot device and given control by the bootstrap program, loads the kernel of the UNIX.RTM. system from the boot device into memory using a built-in device driver in the boot prom and transfers control to the start address of the kernel. The kernel goes through initialization and starts execution of the first process.
Traditionally, the kernel is pre-built as one executable image on the boot device. The single executable image kernel comprises the file subsystem, the device drivers and the process control subsystem. While the pre-built single executable image kernel may be reconfigured, typically special knowledge and skill are also required. Furthermore, the computer system has to be re-booted after reconfiguration. As a result, experience has shown that most UNIX.RTM. systems use the generic kernel provided by the vendor, even though memory allocated to the functionalities that are never used are wasted.
Today, the kernel of some UNIX.RTM. systems are dynamically configurable without requiring the computer system to be rebooted after reconfiguration. Under the fully dynamically reconfigurable UNIX.RTM. system, the kernel's file subsystem, device drivers and process control subsystem are broken up into a root executable object and a number of other relocatable objects that are loadable and linkable dynamically. The root executable object is loaded into memory during system start up and the other relocatable objects are loaded into memory and dynamically linked only when their functionalities are needed. To minimize system start up time and memory requirement, the functions provided by the root executable segment are kept to the minimum. Therefore, it is further desirable for the method for booting up a computer system to support a single executable image kernel as well as a dynamically configurable kernel of the UNIX.RTM. system.
As will be described, the desire to provide a method and apparatus for booting up a computer system from either a standard or a third party boot device without requiring the rebuilding of the system boot prom of the computer system, and the desire that the method and apparatus is applicable to a pre-built single executable image as well as a dynamically configurable operating system, in particular, the kernel of the UNIX.RTM. system, are among the objects and desired results achieved by the present invention.
For further description of the UNIX.RTM. system, the kernel and system boot, see M. J. Bach, The Design of the UNIX.RTM. Operating System, Prentice Hall, 1986.